Skip to content

chore(deps): drop OpenTelemetry override pins - #399

Open
CasperGN wants to merge 3 commits into
mainfrom
chore/unpin-otel-stack
Open

CasperGN wants to merge 3 commits into
mainfrom
chore/unpin-otel-stack

Conversation

@CasperGN

Copy link
Copy Markdown
Contributor

Summary

This removes the six opentelemetry-* entries from override-dependencies. They held the whole OpenTelemetry (OTel) stack at 1.39.1 / 0.60b1.

The pins are no longer needed, because the thing that forced them is gone:

The pins were also not doing their job. On main, every extra on every Python version and platform had a mismatched stack: sdk 1.39.1, but exporter-otlp and zipkin-json at 1.42.1.

What changed

  • pyproject.toml
    • Removed the six OTel overrides and the comments that explained them.
    • Rewrote the agent-core note. It now says that dapr-agents 1.0.2 to 1.0.5 carry the semconv cap, and that the TEMPORARY git source must go back to a pinned release that includes feat(deps): relax opentelemetry dependency bounds and bump mistralai dapr/dapr-agents#780, not 1.0.2 to 1.0.5.
    • Tightened the crewai extra from <1.16 to <1.15.4, and rewrote its comment, which still described an old opentelemetry-api~=1.34 pin. crewai 1.15.4 and later require mcp~=1.28.1. The existing mcp==1.26.0 override would hide that clash without an error, and CI would not catch it. 1.15.3 is the newest release that needs mcp~=1.26.0 (checked against PyPI metadata).
    • Corrected the pydantic_ai comment: only mistralai releases before 2.9.2 cap semconv.
  • AGENTS.md: removed the OTel pin from the list of example overrides.
  • uv.lock: re-locked.
    • dapr-agents moved to a main commit that includes #780.
    • All OTel packages are now on one line: 1.42.1 for api, sdk, proto and exporters, and 0.63b1 for semconv and contrib.
    • crewai, crewai-core and crewai-cli moved up from 1.14.7 to 1.15.3.
    • mistralai moved from 2.6.0 to 2.10.1.
    • cel-python, google-re2, lark and pendulum were added. crewai 1.15 pulls them in through cel-python.
    • asyncio 4.0.0 and durabletask-dapr 0.17.4 were removed, because nothing depends on them after the dapr-agents bump.
    • No framework moved to a lower version.

Verification

  • uv lock --locked: the lock is up to date (358 packages). After the crewai bound was tightened, the only lock change was the manifest line. uv lock --dry-run --upgrade-package crewai reports no changes, so crewai stays at 1.15.3.
  • OTel consistency check: for each extra, I checked Python 3.11, 3.12 and 3.13 on linux, darwin and win32. It checks that api, sdk, proto and exporters match, and that semconv and contrib match the sdk. Result: 0 mismatched combinations, down from 99 on main.
  • Lint: ruff format changed no files. flake8 diagrid tests --ignore=E501,F401,W503,E203,E704 passed.
  • Build job setup (uv sync --all-packages --extra all --group test):
    • mypy --config-file mypy.ini: no issues.
    • pytest tests -m "not integration": 877 passed, 5 skipped.
    • uv pip check: all compatible.
  • uv sync --extra crewai: crewai 1.15.3, mcp 1.26.0, opentelemetry-sdk 1.42.1. uv pip check reports everything compatible.
  • uv sync --extra adk: google-adk, dapr_agents, dapr_agents.observability and the OTLP exporter all import. The OTel packages are on 1.42.1 / 0.63b1, and uv pip check reports everything compatible.
  • holmesgpt job setup (uv sync --extra holmesgpt --group test), run before the comment and crewai-bound follow-up: mypy on diagrid/agent/holmesgpt passed, and 65 tests passed. api and sdk are 1.42.1, semconv 0.63b1. The follow-up did not change any locked holmesgpt package.

Follow-ups (not in this PR)

  • sdk 1.42.1 marks opentelemetry.sdk._logs.LoggingHandler as deprecated. diagrid/agent/core/telemetry.py uses it, and tests/agent/core/test_telemetry_compat.py now shows a DeprecationWarning. It should move to the handler in opentelemetry-instrumentation-logging before a later OTel release removes it.
  • uv sync --extra deepagents installs neither dapr_agents nor OTel, and the same happens on main. The chained extras (deepagents -> langgraph -> agent-core) are not followed.
  • In the holmesgpt environment, uv pip check warns that holmesgpt wants uvicorn<0.41. This comes from the existing uvicorn/fastapi/mcp overrides, not from this change.
  • The dapr-agents git source is still TEMPORARY and must be pinned to a release that includes feat(deps): relax opentelemetry dependency bounds and bump mistralai dapr/dapr-agents#780 before merge.

🤖 Generated with Claude Code

The override-dependencies block pinned the OTel stack to 1.39.1 / 0.60b1
because dapr-agents' mistralai dep capped semantic-conventions below 0.61.
dapr-agents main lifted that cap (dapr/dapr-agents#780, mistralai>=2.9.2),
and crewai 1.15 now requires opentelemetry-api>=1.42, so neither reason
for the pins still holds.

Remove the six opentelemetry-* overrides and their comments, and correct
the agent-core note about which dapr-agents releases carry the cap and
which release to revert to. Update the stale OTel references in the
crewai and pydantic_ai comments and in AGENTS.md.

Re-locked with `uv lock --upgrade-package dapr-agents`, then upgraded the
OTel packages so every fork (including holmesgpt on 3.12) lands on one
line: api/sdk/proto/exporters 1.42.1, semconv and contrib 0.63b1 — the
google-adk ceiling. crewai moves 1.14.7 -> 1.15.3, the newest release
whose `mcp~=1.26.0` still matches the existing mcp==1.26.0 override.
Tighten the crewai extra to <1.15.4 so a future upgrade cannot pull a
release needing mcp~=1.28.1 that the override would silently hide.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Casper Nielsen <casper@diagrid.io>
@CasperGN
CasperGN requested a review from sicoyle September 25, 2026 13:26
@CasperGN CasperGN added the risk:high Review risk tier (dry run, set by risk_tier.py) label Oct 1, 2026
# Conflicts:
#	pyproject.toml
# Conflicts:
#	pyproject.toml
#	uv.lock
@CasperGN
CasperGN requested a review from a team as a code owner November 13, 2026 10:20

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:high Review risk tier (dry run, set by risk_tier.py)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant